package com.platform.modules.sys.entity;

import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.List;

import javax.validation.constraints.NotBlank;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.platform.common.validator.group.AddGroup;
import com.platform.common.validator.group.UpdateGroup;

import lombok.Data;

/**
 * 菜单管理
 *
 * @author 肖亮
 */
@Data
@TableName("SYS_MENU")
public class SysMenuEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 菜单ID
	 */
	@ApiModelProperty(value="菜单ID",example="")
	@TableId
	private String menuId;

	/**
	 * 父菜单ID，一级菜单为0
	 */
	@ApiModelProperty(value="父菜单ID，一级菜单为0",example="")
	@NotBlank(message = "上级菜单不能为空", groups = { AddGroup.class, UpdateGroup.class })
	private String parentId;

	/**
	 * 父菜单名称
	 */
	@ApiModelProperty(value="父菜单名称",example="")
	@TableField(exist = false)
	private String parentName;

	/**
	 * 菜单名称
	 */
	@ApiModelProperty(value="菜单名称",example="")
	@NotBlank(message = "菜单名称不能为空", groups = { AddGroup.class, UpdateGroup.class })
	private String name;

	/**
	 * 菜单URL
	 */
	@ApiModelProperty(value="菜单URL",example="")
	private String url;

	/**
	 * 授权(多个用逗号分隔，如：user:list,user:create)
	 */
	@ApiModelProperty(value=" 授权(多个用逗号分隔，如：user:list,user:create)",example="")
	private String perms;

	/**
	 * 类型 0：目录 1：菜单 2：按钮
	 */
	@ApiModelProperty(value="类型 0：目录 1：菜单 2：按钮",example="")
	private Integer type;

	/**
	 * 菜单图标
	 */
	@ApiModelProperty(value="菜单图标",example="")
	private String icon;

	/**
	 * 排序
	 */
	@ApiModelProperty(value="排序",example="")
	private Integer orderNum;
	
	
	/**
	 * 用户类型：1.建设单位2.勘察单位3.设计单位4.审图办单位5.监管机构单位6.运维单位
	 */
	@ApiModelProperty(value="用户类型：1.建设单位2.勘察单位3.设计单位4.审图办单位5.监管机构单位6.运维单位",example="")
	private String menuOrgType;
	
	/**
	 * 用户类型(名称-非数据库字段)：1.建设单位2.勘察单位3.设计单位4.审图办单位5.监管机构单位6.运维单位
	 */
	@ApiModelProperty(value="用户类型(名称-非数据库字段)：1.建设单位2.勘察单位3.设计单位4.审图办单位5.监管机构单位6.运维单位",example="")
	@TableField(exist = false)
	private String menuOrgTypeName;
	
	/**
	 * ztree属性
	 */
	@ApiModelProperty(value="ztree属性",example="")
	@TableField(exist = false)
	private Boolean open;

	/**
	 * 子级菜单
	 */
	@ApiModelProperty(value="子级菜单",example="")
	@TableField(exist = false)
	private List<?> children;
	
	/**
	 * 父级的父级菜单
	 */
	@ApiModelProperty(value="父级的父级菜单",example="")
	@TableField(exist = false)
	private String parentsId;
	
}
